<!DOCTYPE html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">


</head>

<body>
    <input type="hidden" id="integral" th:value="${integral}">
</body>


<script type="text/javascript">
    (function(window){

        var u = {};
        var isAndroid = (/android/gi).test(navigator.appVersion);
        var uzStorage = function(){
            var ls = window.localStorage;
            if(isAndroid){
                ls = os.localStorage();
            }
            return ls;
        };
        function parseArguments(url, data, fnSuc, dataType) {
            if (typeof(data) == 'function') {
                dataType = fnSuc;
                fnSuc = data;
                data = undefined;
            }
            if (typeof(fnSuc) != 'function') {
                dataType = fnSuc;
                fnSuc = undefined;
            }
            return {
                url: url,
                data: data,
                fnSuc: fnSuc,
                dataType: dataType
            };
        }
        u.trim = function(str){
            if(String.prototype.trim){
                return str == null ? "" : String.prototype.trim.call(str);
            }else{
                return str.replace(/(^\s*)|(\s*$)/g, "");
            }
        };
        u.trimAll = function(str){
            return str.replace(/\s*/g,'');
        };
        u.isElement = function(obj){
            return !!(obj && obj.nodeType == 1);
        };
        u.isArray = function(obj){
            if(Array.isArray){
                return Array.isArray(obj);
            }else{
                return obj instanceof Array;
            }
        };
        u.isEmptyObject = function(obj){
            if(JSON.stringify(obj) === '{}'){
                return true;
            }
            return false;
        };
        u.addEvt = function(el, name, fn, useCapture){
            if(!u.isElement(el)){
                console.warn('$api.addEvt Function need el param, el param must be DOM Element');
                return;
            }
            useCapture = useCapture || false;
            if(el.addEventListener) {
                el.addEventListener(name, fn, useCapture);
            }
        };
        u.rmEvt = function(el, name, fn, useCapture){
            if(!u.isElement(el)){
                console.warn('$api.rmEvt Function need el param, el param must be DOM Element');
                return;
            }
            useCapture = useCapture || false;
            if (el.removeEventListener) {
                el.removeEventListener(name, fn, useCapture);
            }
        };
        u.one = function(el, name, fn, useCapture){
            if(!u.isElement(el)){
                console.warn('$api.one Function need el param, el param must be DOM Element');
                return;
            }
            useCapture = useCapture || false;
            var that = this;
            var cb = function(){
                fn && fn();
                that.rmEvt(el, name, cb, useCapture);
            };
            that.addEvt(el, name, cb, useCapture);
        };
        u.dom = function(el, selector){
            if(arguments.length === 1 && typeof arguments[0] == 'string'){
                if(document.querySelector){
                    return document.querySelector(arguments[0]);
                }
            }else if(arguments.length === 2){
                if(el.querySelector){
                    return el.querySelector(selector);
                }
            }
        };
        u.domAll = function(el, selector){
            if(arguments.length === 1 && typeof arguments[0] == 'string'){
                if(document.querySelectorAll){
                    return document.querySelectorAll(arguments[0]);
                }
            }else if(arguments.length === 2){
                if(el.querySelectorAll){
                    return el.querySelectorAll(selector);
                }
            }
        };
        u.byId = function(id){
            return document.getElementById(id);
        };
        u.first = function(el, selector){
            if(arguments.length === 1){
                if(!u.isElement(el)){
                    console.warn('$api.first Function need el param, el param must be DOM Element');
                    return;
                }
                return el.children[0];
            }
            if(arguments.length === 2){
                return this.dom(el, selector+':first-child');
            }
        };
        u.last = function(el, selector){
            if(arguments.length === 1){
                if(!u.isElement(el)){
                    console.warn('$api.last Function need el param, el param must be DOM Element');
                    return;
                }
                var children = el.children;
                return children[children.length - 1];
            }
            if(arguments.length === 2){
                return this.dom(el, selector+':last-child');
            }
        };
        u.eq = function(el, index){
            return this.dom(el, ':nth-child('+ index +')');
        };
        u.not = function(el, selector){
            return this.domAll(el, ':not('+ selector +')');
        };
        u.prev = function(el){
            if(!u.isElement(el)){
                console.warn('$api.prev Function need el param, el param must be DOM Element');
                return;
            }
            var node = el.previousSibling;
            if(node.nodeType && node.nodeType === 3){
                node = node.previousSibling;
                return node;
            }
        };
        u.next = function(el){
            if(!u.isElement(el)){
                console.warn('$api.next Function need el param, el param must be DOM Element');
                return;
            }
            var node = el.nextSibling;
            if(node.nodeType && node.nodeType === 3){
                node = node.nextSibling;
                return node;
            }
        };
        u.closest = function(el, selector){
            if(!u.isElement(el)){
                console.warn('$api.closest Function need el param, el param must be DOM Element');
                return;
            }
            var doms, targetDom;
            var isSame = function(doms, el){
                var i = 0, len = doms.length;
                for(i; i<len; i++){
                    if(doms[i].isSameNode(el)){
                        return doms[i];
                    }
                }
                return false;
            };
            var traversal = function(el, selector){
                doms = u.domAll(el.parentNode, selector);
                targetDom = isSame(doms, el);
                while(!targetDom){
                    el = el.parentNode;
                    if(el != null && el.nodeType == el.DOCUMENT_NODE){
                        return false;
                    }
                    traversal(el, selector);
                }

                return targetDom;
            };

            return traversal(el, selector);
        };
        u.contains = function(parent,el){
            var mark = false;
            if(el === parent){
                mark = true;
                return mark;
            }else{
                do{
                    el = el.parentNode;
                    if(el === parent){
                        mark = true;
                        return mark;
                    }
                }while(el === document.body || el === document.documentElement);

                return mark;
            }

        };
        u.remove = function(el){
            if(el && el.parentNode){
                el.parentNode.removeChild(el);
            }
        };
        u.attr = function(el, name, value){
            if(!u.isElement(el)){
                console.warn('$api.attr Function need el param, el param must be DOM Element');
                return;
            }
            if(arguments.length == 2){
                return el.getAttribute(name);
            }else if(arguments.length == 3){
                el.setAttribute(name, value);
                return el;
            }
        };
        u.removeAttr = function(el, name){
            if(!u.isElement(el)){
                console.warn('$api.removeAttr Function need el param, el param must be DOM Element');
                return;
            }
            if(arguments.length === 2){
                el.removeAttribute(name);
            }
        };
        u.hasCls = function(el, cls){
            if(!u.isElement(el)){
                console.warn('$api.hasCls Function need el param, el param must be DOM Element');
                return;
            }
            if(el.className.indexOf(cls) > -1){
                return true;
            }else{
                return false;
            }
        };
        u.addCls = function(el, cls){
            if(!u.isElement(el)){
                console.warn('$api.addCls Function need el param, el param must be DOM Element');
                return;
            }
            if('classList' in el){
                el.classList.add(cls);
            }else{
                var preCls = el.className;
                var newCls = preCls +' '+ cls;
                el.className = newCls;
            }
            return el;
        };
        u.removeCls = function(el, cls){
            if(!u.isElement(el)){
                console.warn('$api.removeCls Function need el param, el param must be DOM Element');
                return;
            }
            if('classList' in el){
                el.classList.remove(cls);
            }else{
                var preCls = el.className;
                var newCls = preCls.replace(cls, '');
                el.className = newCls;
            }
            return el;
        };
        u.toggleCls = function(el, cls){
            if(!u.isElement(el)){
                console.warn('$api.toggleCls Function need el param, el param must be DOM Element');
                return;
            }
            if('classList' in el){
                el.classList.toggle(cls);
            }else{
                if(u.hasCls(el, cls)){
                    u.removeCls(el, cls);
                }else{
                    u.addCls(el, cls);
                }
            }
            return el;
        };
        u.val = function(el, val){
            if(!u.isElement(el)){
                console.warn('$api.val Function need el param, el param must be DOM Element');
                return;
            }
            if(arguments.length === 1){
                switch(el.tagName){
                    case 'SELECT':
                        var value = el.options[el.selectedIndex].value;
                        return value;
                        break;
                    case 'INPUT':
                        return el.value;
                        break;
                    case 'TEXTAREA':
                        return el.value;
                        break;
                }
            }
            if(arguments.length === 2){
                switch(el.tagName){
                    case 'SELECT':
                        el.options[el.selectedIndex].value = val;
                        return el;
                        break;
                    case 'INPUT':
                        el.value = val;
                        return el;
                        break;
                    case 'TEXTAREA':
                        el.value = val;
                        return el;
                        break;
                }
            }

        };
        u.prepend = function(el, html){
            if(!u.isElement(el)){
                console.warn('$api.prepend Function need el param, el param must be DOM Element');
                return;
            }
            el.insertAdjacentHTML('afterbegin', html);
            return el;
        };
        u.append = function(el, html){
            if(!u.isElement(el)){
                console.warn('$api.append Function need el param, el param must be DOM Element');
                return;
            }
            el.insertAdjacentHTML('beforeend', html);
            return el;
        };
        u.before = function(el, html){
            if(!u.isElement(el)){
                console.warn('$api.before Function need el param, el param must be DOM Element');
                return;
            }
            el.insertAdjacentHTML('beforebegin', html);
            return el;
        };
        u.after = function(el, html){
            if(!u.isElement(el)){
                console.warn('$api.after Function need el param, el param must be DOM Element');
                return;
            }
            el.insertAdjacentHTML('afterend', html);
            return el;
        };
        u.html = function(el, html){
            if(!u.isElement(el)){
                console.warn('$api.html Function need el param, el param must be DOM Element');
                return;
            }
            if(arguments.length === 1){
                return el.innerHTML;
            }else if(arguments.length === 2){
                el.innerHTML = html;
                return el;
            }
        };
        u.text = function(el, txt){
            if(!u.isElement(el)){
                console.warn('$api.text Function need el param, el param must be DOM Element');
                return;
            }
            if(arguments.length === 1){
                return el.textContent;
            }else if(arguments.length === 2){
                el.textContent = txt;
                return el;
            }
        };
        u.offset = function(el){
            if(!u.isElement(el)){
                console.warn('$api.offset Function need el param, el param must be DOM Element');
                return;
            }
            var sl = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
            var st = Math.max(document.documentElement.scrollTop, document.body.scrollTop);

            var rect = el.getBoundingClientRect();
            return {
                l: rect.left + sl,
                t: rect.top + st,
                w: el.offsetWidth,
                h: el.offsetHeight
            };
        };
        u.css = function(el, css){
            if(!u.isElement(el)){
                console.warn('$api.css Function need el param, el param must be DOM Element');
                return;
            }
            if(typeof css == 'string' && css.indexOf(':') > 0){
                el.style && (el.style.cssText += ';' + css);
            }
        };
        u.cssVal = function(el, prop){
            if(!u.isElement(el)){
                console.warn('$api.cssVal Function need el param, el param must be DOM Element');
                return;
            }
            if(arguments.length === 2){
                var computedStyle = window.getComputedStyle(el, null);
                return computedStyle.getPropertyValue(prop);
            }
        };
        u.jsonToStr = function(json){
            if(typeof json === 'object'){
                return JSON && JSON.stringify(json);
            }
        };
        u.strToJson = function(str){
            if(typeof str === 'string'){
                return JSON && JSON.parse(str);
            }
        };
        u.setStorage = function(key, value){
            if(arguments.length === 2){
                var v = value;
                if(typeof v == 'object'){
                    v = JSON.stringify(v);
                    v = 'obj-'+ v;
                }else{
                    v = 'str-'+ v;
                }
                var ls = uzStorage();
                if(ls){
                    ls.setItem(key, v);
                }
            }
        };
        u.getStorage = function(key){
            var ls = uzStorage();
            if(ls){
                var v = ls.getItem(key);
                if(!v){return;}
                if(v.indexOf('obj-') === 0){
                    v = v.slice(4);
                    return JSON.parse(v);
                }else if(v.indexOf('str-') === 0){
                    return v.slice(4);
                }
            }
        };
        u.rmStorage = function(key){
            var ls = uzStorage();
            if(ls && key){
                ls.removeItem(key);
            }
        };
        u.clearStorage = function(){
            var ls = uzStorage();
            if(ls){
                ls.clear();
            }
        };
        u.fixIos7Bar = function(el){
            return u.fixStatusBar(el);
        };
        u.fixStatusBar = function(el){
            if(!u.isElement(el)){
                console.warn('$api.fixStatusBar Function need el param, el param must be DOM Element');
                return 0;
            }
            el.style.paddingTop = api.safeArea.top + 'px';
            return el.offsetHeight;
        };
        u.fixTabBar = function(el){
            if(!u.isElement(el)){
                console.warn('$api.fixTabBar Function need el param, el param must be DOM Element');
                return 0;
            }
            el.style.paddingBottom = api.safeArea.bottom + 'px';
            return el.offsetHeight;
        };
        u.toast = function(title, text, time){
            var opts = {};
            var show = function(opts, time){
                api.showProgress(opts);
                setTimeout(function(){
                    api.hideProgress();
                },time);
            };
            if(arguments.length === 1){
                var time = time || 500;
                if(typeof title === 'number'){
                    time = title;
                }else{
                    opts.title = title+'';
                }
                show(opts, time);
            }else if(arguments.length === 2){
                var time = time || 500;
                var text = text;
                if(typeof text === "number"){
                    var tmp = text;
                    time = tmp;
                    text = null;
                }
                if(title){
                    opts.title = title;
                }
                if(text){
                    opts.text = text;
                }
                show(opts, time);
            }
            if(title){
                opts.title = title;
            }
            if(text){
                opts.text = text;
            }
            time = time || 500;
            show(opts, time);
        };
        u.post = function(/*url,data,fnSuc,dataType*/){
            var argsToJson = parseArguments.apply(null, arguments);
            var json = {};
            var fnSuc = argsToJson.fnSuc;
            argsToJson.url && (json.url = argsToJson.url);
            argsToJson.data && (json.data = argsToJson.data);
            if(argsToJson.dataType){
                var type = argsToJson.dataType.toLowerCase();
                if (type == 'text'||type == 'json') {
                    json.dataType = type;
                }
            }else{
                json.dataType = 'json';
            }
            json.method = 'post';
            api.ajax(json,
                function(ret,err){
                    if (ret) {
                        fnSuc && fnSuc(ret);
                    }
                }
            );
        };
        u.get = function(/*url,fnSuc,dataType*/){
            var argsToJson = parseArguments.apply(null, arguments);
            var json = {};
            var fnSuc = argsToJson.fnSuc;
            argsToJson.url && (json.url = argsToJson.url);
            //argsToJson.data && (json.data = argsToJson.data);
            if(argsToJson.dataType){
                var type = argsToJson.dataType.toLowerCase();
                if (type == 'text'||type == 'json') {
                    json.dataType = type;
                }
            }else{
                json.dataType = 'text';
            }
            json.method = 'get';
            api.ajax(json,
                function(ret,err){
                    if (ret) {
                        fnSuc && fnSuc(ret);
                    }
                }
            );
        };

        /*end*/


        window.$api = u;

    })(window);
    apiready = function() {
        api.sendEvent({
          name: 'onPay',
          extra: {
              integral:$api.val($api.byId("integral")),
          }
        });
        api.closeWin({});
    }
</script>

</html>
